草庐IT

c++ - Visual Studio 和 Boost::Test

全部标签

c++ - Visual Studio(或任何其他工具)能否将地址解释为调用堆栈的开始( boost 上下文)?

是否可以告诉VisualStudio(或任何其他主要操作系统上的任何其他工具)将地址解释为调用堆栈的开头?我想要实现的目标:我们有一个库,它使用boost的make_fcontext/jump_fcontext并将这些上下文存储到一个容器,以便暂停一些调用以供以后处理。我的问题是-是否有可能以某种方式调试这些挂起的调用是什么?我想,我可以告诉调试器/工具类似:“这是这个地址,虽然它并不明显,但它实际上指向一个调用堆栈,‘解析’它并像标准调用堆栈一样显示给我”。不知道这在理论上是否可行,因为我不知道boost::context的细节,但它听起来是可以实现的。有没有人尝试过处理这个问题?

c++ - CMake 可以找到一个 Boost 头文件,但找不到另一个

由于Boost库可以单独安装在某些系统上(即使这种情况可能很少见),我想确保它们可用。我通过检查一些我需要的头文件来做到这一点:check_include_file_cxx(boost/parameter/keyword.hppHAVE_BOOST_PARAMETER_KEYWORD_HPP)check_include_file_cxx(boost/asio/io_service.hppHAVE_BOOST_ASIO_IO_SERVICE_HPP)我遇到的问题是CMake声称它可以找到boost/parameter/keyword.hpp头文件,但找不到boost/asio/io_se

c++ - 如何编写用于从 C 访问 C++ 类成员的包装器(具有继承和构造函数)

在大多数问题中,我看到了一个没有构造函数、继承的简单类的包装器,只是调用了一个用于创建和销毁的void*以及一个foo函数。对于像下面这样的结构,应该如何创建一个包装器来从C代码访问类成员。myHeader.hforc++-------------------classchildA:publicparentA{private:voidlogger()override}classchildB:publicparentB{private:/*somemembers*/protected:/*somemembers*/public:explicitchildB(childA*a);}clas

c++ - Boost::Beast:带有 websocket 流水线的服务器

我正在编写一个带有boostbeast1.70和mysql8C连接器的c++websocket服务器。服务器将同时连接多个客户端。特殊之处在于每个客户端将向服务器连续执行100个websocket请求。我的服务器的每个请求都是“CPU轻型”,但服务器对每个请求执行“时间繁重”的SQL请求。我已经使用websocket_server_coro.cpp示例启动了我的服务器。服务器步骤是:1)websocket读取2)一个sql请求3)websocket写入问题是对于给定的用户,服务器在第2步被“锁定”,并且在这一步和第3步完成之前无法读取。因此,这100个请求是按顺序解决的。这对我的用例来

c++ - 我们如何使用#pragma 警告禁用链接器警告?

我们可以禁用编译器警告#pragmawarning(disable:4966)我们如何使用#pragma指令禁用链接器警告?像这样的东西://DisablelinkerwarningLNK4221#pragmawarning(disable:4221) 最佳答案 链接器警告不能放在源文件中,因为源文件(.CPP/.C/.H等)供编译器使用,而不供链接器使用。编译将从一个或多个文件中生成目标文件(通过一个或多个“翻译单元”)。如果您将#pramadisable_linker_warning放在某个源文件中-链接器设置应该转到哪个.OB

c++ - 转换宽字符串以 boost 日期

我需要将数百万个存储为宽字符串的日期转换为boost日期以下代码有效。但是,它会生成一个可怕的编译器警告并且看起来效率不高。有没有更好的办法?#include"boost/date_time/gregorian/gregorian.hpp"usingnamespaceboost::gregorian;#includeusingnamespacestd;wstringws(L"2008/01/01");stringtemp(ws.length(),'\0');copy(ws.begin(),ws.end(),temp.begin());dated1(from_simple_string(

c++ - 如何在 C 中实现 RFC 3393(Ipdv 数据包延迟变化)?

我正在构建一个以太网应用程序,我将从一侧发送数据包并在另一侧接收数据包。我想像RFC3393中那样计算接收方数据包的延迟。所以我必须在发送方的数据包中放置一个时间戳,然后在接收方收到数据包后立即获取时间戳。减去这些值我将得到时间戳的差异,然后用后续差异减去这个值我将得到单向ipdv延迟。两个时钟不同步。所以非常感谢任何帮助。谢谢。 最佳答案 RFC3393用于测量数据包延迟的方差,而不是用于测量延迟本身。举个例子:您正在编写一个视频流应用程序。您希望缓冲尽可能少的视频数据(以便视频尽快开始播放)。假设数据总是总是总是从机器A到机器B

c++ - 哪种方法最适合从光驱中快速读取文件?

从硬盘读取文件时,mmap通常被认为是快速将数据存入内存的好方法。使用光驱时,访问需要更多时间,而且您需要担心更高的延迟。您使用什么方法/抽象来隐藏/消除尽可能多的光驱延迟和/或总加载时间? 最佳答案 您无法使用真正的抽象。光驱具有非常特殊的特性,必须对其进行优化才能获得最佳性能。一些提示:光驱的最大killer是寻道时间。在可能的情况下,确保您正在阅读的所有文件在光盘上都是按顺序排列的,并且尽可能紧密地排列在一起。如果你必须寻找,那么就朝一个方向寻找,并尽可能少地寻找。异步读取也可以极大地提高性能。如果您需要加载和处理文件A、B和

c++ - 如何在 C++ 中更改 Latin1-UTF8 编码(可能使用 Boost)?

我的源库主要使用UTF8,但一些较旧的库在其中硬编码了WindowsLatin1编码字符串。我希望Boost有一个明确的转换功能,但我没有找到。我真的需要手动编写这样一个普通的解决方案吗?寻找在Linux上运行的可移植解决方案。(ThisQ类似,但不完全相同)编辑:ICU似乎是正确的答案,但对我的需求来说有点矫枉过正。我最终对已知的几个使用过的扩展字符进行了字符串替换。 最佳答案 InternationalComponentsforUnicode(ICU)确实有您正在寻找的解决方案。Boost可以在支持ICU的情况下编译,例如用于B

c++ - 使用 GDB 在 Windows 下调试 DLL

我有一些项目由几个DLL组成,这些DLL是用MinGW编译的,带有调试信息,另一个项目的EXE目标使用这些DLL(也是用MinGW编译的)。问题是,我需要在那些DLL中的函数上放置断点,但是GDB虽然设置了断点,但只是在运行时默默地忽略了它们。进入它们(使用's'键)只是跳过它们(就像使用'n'键一样)。我怎样才能进入那些DLL?也许我应该为GDB指定一些选项?提前致谢。 最佳答案 确保使用gccoptimizationlevel进行编译标志设置为0(-O0)。 关于c++-使用GDB在